dofile "eng/util.lua"
morph:word({ female = true, 
                    singular = true, 
                    "Lisa", 
                    "Lisa", 
                    "Lisa", 
                    "Lisa", 
                    "Lisa", 
                    "Lisa" })
                    
--Search
Verb { "Search %2", "~search", verb_with_obj_("вн") }
parser.events.Search = nil;
parser.events.after_Search = nil;

--Exit
Verb { "Exit", "~leave|~exit", "{}" }
parser.events.Exit = function()
  return "Where should I go?"
end;

--Exam
function verb_exam_type(s)
  if s:word(3) == "with" then
    return "ExamWith %2 %4";
  else
    return "Exam %2";
  end
end
Verb { verb_exam_type, "~examine|~look at", verb_with_obj_inv_("вн", nil, "{hero}вн|{}"), "{}|with", aux_with_inv_("вн") }
parser.events.ExamWith = function()
  return "I can see without a telescope."
end
parser.events.Exam = nil;
parser.events.after_Exam = nil;

--Walk, Ascend, Descend, Follow
function verb_walk_type(s)
  if s:word(1) == "go" and s:word(2) == "up" then
    return "Ascend %3";
  elseif s:word(1) == "go" and s:word(2) == "down" then
    return "Descend %3";
  elseif s:word(1) == "get" and s:word(2) == "up" then
    return "Ascend %3";
  elseif s:word(1) == "get" and s:word(2) == "down" then
    return "Descend %3";
  else
    return "Walk %2";
  end
end
function verb_walk_in(s)
  if s:word(2) == "up" or s:word(2) == "down" then
    return verb_with_obj_("вн")(s);
  else
    return "{}";
  end
end
Verb { "Walk %2", "~walk", verb_with_obj_("вн") }
Verb { verb_walk_type, "~go|~get", verb_with_obj_("вн", nil, "up|down"), verb_walk_in }
Verb { "Ascend %2", "~ascend|~up|~mount", verb_with_obj_("вн") }
Verb { "Descend %2", "~descend|~down", verb_with_obj_("вн") }
function verb_climb_type(s)
  if s:word(2) == "down" then
    return "Descend %3";
  else
    return "Ascend %2";
  end
end
function verb_climb_in(s)
  if s:word(2) == "down" then
    return verb_with_obj_("вн")(s);
  else
    return "{}";
  end
end
Verb { verb_climb_type, "~climb", verb_with_obj_("вн", nil, "down"), verb_climb_in }
Verb { "Follow %2", "~follow", verb_with_obj_("вн") }

parser.events.Walk = nil;

--Wait
Verb { "Wait", "~wait", "{}" }
parser.events.Wait = function()
  return "What am I waiting for?"
end

--Take, Take Off
function verb_take_type(s)
  if s:word(2) == "off" then
    return "TakeOff %3";
  else
    return "Take %2";
  end
end
function verb_take_in(s)
  if s:word(2) == "off" then
    return verb_with_obj_inv_("вн")(s);
  else
    return "{}";
  end
end
Verb { verb_take_type, "~take", verb_with_obj_("вн",nil,"off"), verb_take_in }
Verb { "Take %2", "~grab", verb_with_obj_("вн") }
Verb { "TakeOff %3", "~pull", "off", verb_with_obj_inv_("вн") }
Verb { "TakeOff %2", "~remove", verb_with_obj_inv_("вн") }
parser.events.after_Take = nil;

--Clean
Verb { "Clean %2 %4", "~clean|~wipe", verb_with_obj_inv_("вн"), "with", aux_with_obj_inv_("тв") }
parser.events.Clean = function()
  return "I have no time.";
end

--Wear
Verb { "Wear %2", "~wear", verb_with_inv_("вн") }

--Open
Verb { "Open %2 %4", "~open", verb_with_obj_("вн"), "{}|with", aux_with_inv_("тв") }

--Jump
function verb_jump_type(s)
  if s:word(2) == "onto" then
    return "Jump %3";
  else
    return "JumpFrom %3";
  end
end
Verb { verb_jump_type, "~jump", "onto|from", verb_with_obj_("вн") }

--Sit
Verb { "Sit %2", "~sit", verb_with_obj_("вн") }

--Stand
Verb { "Stand", "~stand", "{}" }
parser.events.Stand = function()
  return "I am standing on my feet already.";
end

--Fire
Verb { "Fire %2 %4", "~light|~set alight", verb_with_obj_inv_("вн"), "with", aux_with_inv_("тв") }
parser.events.Fire = function(self, s)
  return "I am not going to light a fire here.";
end

--FireOff
Verb { "FireOff %2", "~quench|~blow out|~put out|~extinguish", verb_with_obj_inv_("вн") }
parser.events.FireOff = function(self, s)
  return "Fortunately, it won't burn."
end

--Pour
Verb { "Pour %2 %4", "~pour|~empty|~drain", verb_with_obj_inv_("вн"), "onto", aux_with_obj_inv_("вн") }

--Pick
Verb { "Pick %2", "~pick", verb_with_obj_("вн") }

--Throw
Verb { "Throw %2 %3", "~throw", verb_with_inv_("вн"), aux_with_obj_("вн",nil,"{}") }

Verb { "Unload %2", "~unload", verb_with_obj_("вн") }

--Move
Verb { "Move %2", "~move", verb_with_obj_("вн") }

--Cauterize
Verb { "Cauterize %2 %4", "~cauterize|~press|~seal", verb_with_obj_inv_("вн"), "with", aux_with_obj_inv_("тв") }

--Bandage
Verb { "Bandage %2 %4", "~tie|~wrap|~dress", verb_with_obj_inv_("вн"), "with", aux_with_obj_inv_("тв") }

--Wash
Verb { "Wash %2 %4", "~rinse|~wash|~douse", verb_with_obj_inv_("вн"), "with", aux_with_obj_inv_("тв") }

--Heat
Verb { "Heat %2 %4", "~heat|~warm", verb_with_inv_("вн"), "with", aux_with_obj_inv_("тв") }

--Untie
Verb { "Untie %2", "~unbind|~untie", verb_with_obj_("вн") }

--Cut
Verb { "Cut %2 %4", "~cut|~sever|~chop|~slice|~slash", verb_with_obj_("вн"), "with", aux_with_obj_inv_("тв") }
parser.events.Cut = function(self, s)
  return "I do not want to do it.";
end

--Swing
Verb { "Swing %2", "~swing", verb_with_obj_inv_("дт") }

--Flail
Verb { "Flail %3", "~flail|~wave", "at", verb_with_obj_("дт") }

--TurnAround
Verb { "TurnAround", "~turn", "{}" }
parser.events.TurnAround = function()
  return "I see nothing of interest.";
end

--Lie
Verb { "Lie %2", "~lie", verb_with_obj_("вн") }

--Wet
Verb { "Wet %2 %4", "~dampen|~wet", verb_with_inv_("вн"), "with", aux_with_inv_("тв") }

--Drink
Verb { "Drink %2", "~drink|~gulp", verb_with_obj_inv_("вн") }
